package pl.poznan.put.cs.idss.particlefilter.agent;

import java.awt.Point;

/**
 * 
 * @author Gosia zarządza przekroczeniem granicy przez agenta.
 */
public class BorderManager {

	private int leftBorder;
	private int rightBorder;
	private int upBorder;
	private int downBorder;

	public BorderManager(int leftBorder, int rightBorder, int downBorder,
			int upBorder) {
		this.leftBorder = leftBorder;
		this.rightBorder = rightBorder;
		this.upBorder = upBorder;
		this.downBorder = downBorder;
	}

	/**
	 * Sprawdza, czy agent jest blisko krawędzi mapy
	 * 
	 * 
	 * @return int -1 blisko lewej 1 blisko prawej 0 daleko od krawedzi x
	 */
	public int nearBorderX(int x) {
		if (x < leftBorder) {
			return -1;
		} else if (x > rightBorder) {
			return 1;
		} else {
			return 0;
		}
	}

	/**
	 * Sprawdza, czy agent jest blisko krawędzi mapy
	 * 
	 * 
	 * @return int -1 blisko dolnej 1 blisko gornej 0 daleko od krawedzi y
	 */
	public int nearBorderY(int y) {
		if (y < downBorder) {
			return -1;
		} else if (y > upBorder) {
			return 1;
		} else {
			return 0;
		}
	}

	/**
	 * zmiana kierunku ruchu po odbiciu
	 */
	public void changeTurn(Point turn, int nX, int nY) {

		if (nX == -1) {
			turn.x = 1;
		} else if (nX == 1) {
			turn.x = -1;
		}
		if (nY == -1) {
			turn.y = 1;
		} else if (nY == 1) {
			turn.y = -1;
		}

	}

}
